ConnectSpecCamera.py

Connect to Camera by IP Address

It shows how to connect camera to your program by camera IP (Camera IP) address and NIC IP (Export IP) address corresponding to the camera. Enter the IP address in the format of xx.xx.xx.xx.

1 # -- coding: utf-8 --
2 
3 import time
4 import sys
5 import threading
6 import platform
7 import os
8 
9 from ctypes import *
10 
11 # Compatible with different operating systems to load DDL
12 currentsystem = platform.system()
13 if currentsystem == 'Windows':
14  sys.path.append(os.path.join(os.getenv('MVCAM_COMMON_RUNENV'), "Samples", "Python", "MvImport"))
15 else:
16  sys.path.append(os.path.join("..", "..", "MvImport"))
17 from MvCameraControl_class import *
18 
19 # Compatible with input processing of Python 2.X and 3.X
20 if sys.version_info[0] < 3:
21  # Python 2.x
22  input_func = raw_input
23 else:
24  # Python 3.x
25  input_func = input
26 
27 
28 g_bExit = False
29 
30 # Customize the thread function
31 def work_thread(cam, pData):
32  stOutFrame = MV_FRAME_OUT()
33  memset(byref(stOutFrame), 0, sizeof(stOutFrame))
34  while True:
35  ret = cam.MV_CC_GetImageBuffer(stOutFrame, 1000)
36  if None != stOutFrame.pBufAddr and 0 == ret:
37  print ("get one frame: Width[%d], Height[%d], nFrameNum[%d]" % (stOutFrame.stFrameInfo.nWidth, stOutFrame.stFrameInfo.nHeight, stOutFrame.stFrameInfo.nFrameNum))
38  nRet = cam.MV_CC_FreeImageBuffer(stOutFrame)
39  else:
40  print ("no data[0x%x]" % ret)
41  if g_bExit == True:
42  break
43 
44 if __name__ == "__main__":
45 
46  try:
47  # Initialize SDK resources
48  MvCamera.MV_CC_Initialize()
49 
50  SDKVersion = MvCamera.MV_CC_GetSDKVersion()
51  print ("SDKVersion[0x%x]" % SDKVersion)
52 
53  stDevInfo = MV_CC_DEVICE_INFO()
54  stGigEDev = MV_GIGE_DEVICE_INFO()
55 
56  deviceIp = input_func("please input current camera ip : ")
57  netIp = input_func("please input net export ip : ")
58 
59  deviceIpList = deviceIp.split('.')
60  stGigEDev.nCurrentIp = (int(deviceIpList[0]) << 24) | (int(deviceIpList[1]) << 16) | (int(deviceIpList[2]) << 8) | int(deviceIpList[3])
61 
62  netIpList = netIp.split('.')
63  stGigEDev.nNetExport = (int(netIpList[0]) << 24) | (int(netIpList[1]) << 16) | (int(netIpList[2]) << 8) | int(netIpList[3])
64 
65  stDevInfo.nTLayerType = MV_GIGE_DEVICE
66  stDevInfo.SpecialInfo.stGigEInfo = stGigEDev
67 
68  # Create the camera instance
69  cam = MvCamera()
70 
71  # Select a device, and create a handle
72  ret = cam.MV_CC_CreateHandle(stDevInfo)
73  if ret != 0:
74  raise Exception("create handle fail! ret[0x%x]" % ret)
75 
76  # Turn on the device
77  ret = cam.MV_CC_OpenDevice(MV_ACCESS_Exclusive, 0)
78  if ret != 0:
79  raise Exception ("open device fail! ret[0x%x]" % ret)
80 
81  # Get optimal packet size (only supported by GigE devices)
82  if stDevInfo.nTLayerType == MV_GIGE_DEVICE:
83  nPacketSize = cam.MV_CC_GetOptimalPacketSize()
84  if int(nPacketSize) > 0:
85  ret = cam.MV_CC_SetIntValue("GevSCPSPacketSize",nPacketSize)
86  if ret != 0:
87  print ("Warning: Set Packet Size fail! ret[0x%x]" % ret)
88  else:
89  print ("Warning: Get Packet Size fail! ret[0x%x]" % nPacketSize)
90 
91  # Set trigger mode to off
92  ret = cam.MV_CC_SetEnumValue("TriggerMode", MV_TRIGGER_MODE_OFF)
93  if ret != 0:
94  raise Exception ("set trigger mode fail! ret[0x%x]" % ret)
95 
96  # Start grabbing images
97  ret = cam.MV_CC_StartGrabbing()
98  if ret != 0:
99  raise Exception ("start grabbing fail! ret[0x%x]" % ret)
100 
101 
102  try:
103  hThreadHandle = threading.Thread(target=work_thread, args=(cam, None))
104  hThreadHandle.start()
105  except:
106  raise Exception ("error: unable to start thread")
107 
108  print ("press Enter key to stop grabbing.")
109  input_func()
110 
111  g_bExit = True
112  hThreadHandle.join()
113 
114  # Stop grabbing images
115  ret = cam.MV_CC_StopGrabbing()
116  if ret != 0:
117  raise Exception ("stop grabbing fail! ret[0x%x]" % ret)
118 
119  # Turn off the device
120  ret = cam.MV_CC_CloseDevice()
121  if ret != 0:
122  raise Exception ("close deivce fail! ret[0x%x]" % ret)
123 
124  # Destroy the handle
125  cam.MV_CC_DestroyHandle()
126  except Exception as e:
127  print(e)
128  cam.MV_CC_CloseDevice()
129  cam.MV_CC_DestroyHandle()
130  finally:
131  # Release SDK resources
132  MvCamera.MV_CC_Finalize()